[INFO] cloning repository https://github.com/itsakeyfut/chess-server
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/itsakeyfut/chess-server" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fitsakeyfut%2Fchess-server", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fitsakeyfut%2Fchess-server'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 2f266c5c1e09327523939da7ad2f5b2b78ffc047
[INFO] fixing itsakeyfut/chess-server against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=start=2015 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fitsakeyfut%2Fchess-server" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/itsakeyfut/chess-server
[INFO] finished tweaking git repo https://github.com/itsakeyfut/chess-server
[INFO] tweaked toml for git repo https://github.com/itsakeyfut/chess-server written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/itsakeyfut/chess-server on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/itsakeyfut/chess-server already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] b857a2216dba51a9db4905e8497599e2ff66bc5aef6633dbe0aa5c4a6ae98413
[INFO] running `Command { std: "docker" "start" "b857a2216dba51a9db4905e8497599e2ff66bc5aef6633dbe0aa5c4a6ae98413", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "b857a2216dba51a9db4905e8497599e2ff66bc5aef6633dbe0aa5c4a6ae98413" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b857a2216dba51a9db4905e8497599e2ff66bc5aef6633dbe0aa5c4a6ae98413", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "b857a2216dba51a9db4905e8497599e2ff66bc5aef6633dbe0aa5c4a6ae98413" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=start=2015", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.101
[INFO] [stderr]     Checking getrandom v0.3.3
[INFO] [stderr]     Checking parking_lot_core v0.9.10
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]     Checking uuid v1.17.0
[INFO] [stderr]     Checking tempfile v3.20.0
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]    Compiling async-trait v0.1.88
[INFO] [stderr]     Checking tokio v1.45.1
[INFO] [stderr]     Checking thiserror v2.0.12
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]     Checking toml_datetime v0.6.9
[INFO] [stderr]     Checking serde_spanned v0.6.8
[INFO] [stderr]     Checking serde_json v1.0.140
[INFO] [stderr]     Checking toml_edit v0.22.26
[INFO] [stderr]     Checking toml v0.8.22
[INFO] [stderr]     Checking chess-server v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0599]: no method named `shutdown` found for struct `tokio::net::TcpStream` in the current scope
[INFO] [stdout]     --> src/network/server.rs:98:40
[INFO] [stdout]      |
[INFO] [stdout]   98 |                         let _ = stream.shutdown().await;
[INFO] [stdout]      |                                        ^^^^^^^^ method not found in `tokio::net::TcpStream`
[INFO] [stdout]      |
[INFO] [stdout]     ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.45.1/src/io/util/async_write_ext.rs:1289:12
[INFO] [stdout]      |
[INFO] [stdout] 1289 |         fn shutdown(&mut self) -> Shutdown<'_, Self>
[INFO] [stdout]      |            -------- the method is available for `tokio::net::TcpStream` here
[INFO] [stdout]      |
[INFO] [stdout]      = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `AsyncWriteExt` which provides `shutdown` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]      |
[INFO] [stdout]    1 + use tokio::io::AsyncWriteExt;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/network/server.rs:483:48
[INFO] [stdout]     |
[INFO] [stdout] 483 |                     return Some(Message::error(e, request_id));
[INFO] [stdout]     |                                 -------------- ^ expected `ChessServerError`, found `String`
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/network/protocol.rs:367:12
[INFO] [stdout]     |
[INFO] [stdout] 367 |     pub fn error(error: ChessServerError, request_id: Option<String>) -> Self {
[INFO] [stdout]     |            ^^^^^ -----------------------
[INFO] [stdout] help: try wrapping the expression in a variant of `utils::error::ChessServerError`
[INFO] [stdout]     |
[INFO] [stdout] 483 |                     return Some(Message::error(utils::error::ChessServerError::GameNotFound { game_id: e }, request_id));
[INFO] [stdout]     |                                                +++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 483 |                     return Some(Message::error(utils::error::ChessServerError::InvalidMove { reason: e }, request_id));
[INFO] [stdout]     |                                                +++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 483 |                     return Some(Message::error(utils::error::ChessServerError::PlayerNotFound { player_id: e }, request_id));
[INFO] [stdout]     |                                                +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 483 |                     return Some(Message::error(utils::error::ChessServerError::PlayerAlreadyInGame { player_id: e }, request_id));
[INFO] [stdout]     |                                                ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout]     = and 15 other candidates
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `palyer_id` on type `session::Session`
[INFO] [stdout]    --> src/network/server.rs:528:21
[INFO] [stdout]     |
[INFO] [stdout] 528 |             session.palyer_id.clone(),
[INFO] [stdout]     |                     ^^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout] help: a field with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 528 -             session.palyer_id.clone(),
[INFO] [stdout] 528 +             session.player_id.clone(),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/network/server.rs:532:50
[INFO] [stdout]     |
[INFO] [stdout] 532 |             Err(e) => return Some(Message::error(e, request_id)),
[INFO] [stdout]     |                                   -------------- ^ expected `ChessServerError`, found `String`
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/network/protocol.rs:367:12
[INFO] [stdout]     |
[INFO] [stdout] 367 |     pub fn error(error: ChessServerError, request_id: Option<String>) -> Self {
[INFO] [stdout]     |            ^^^^^ -----------------------
[INFO] [stdout] help: try wrapping the expression in a variant of `utils::error::ChessServerError`
[INFO] [stdout]     |
[INFO] [stdout] 532 |             Err(e) => return Some(Message::error(utils::error::ChessServerError::GameNotFound { game_id: e }, request_id)),
[INFO] [stdout]     |                                                  +++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 532 |             Err(e) => return Some(Message::error(utils::error::ChessServerError::InvalidMove { reason: e }, request_id)),
[INFO] [stdout]     |                                                  +++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 532 |             Err(e) => return Some(Message::error(utils::error::ChessServerError::PlayerNotFound { player_id: e }, request_id)),
[INFO] [stdout]     |                                                  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 532 |             Err(e) => return Some(Message::error(utils::error::ChessServerError::PlayerAlreadyInGame { player_id: e }, request_id)),
[INFO] [stdout]     |                                                  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout]     = and 15 other candidates
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/network/server.rs:600:40
[INFO] [stdout]     |
[INFO] [stdout] 600 |             return Some(Message::error(e, request_id));
[INFO] [stdout]     |                         -------------- ^ expected `ChessServerError`, found `String`
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/network/protocol.rs:367:12
[INFO] [stdout]     |
[INFO] [stdout] 367 |     pub fn error(error: ChessServerError, request_id: Option<String>) -> Self {
[INFO] [stdout]     |            ^^^^^ -----------------------
[INFO] [stdout] help: try wrapping the expression in a variant of `utils::error::ChessServerError`
[INFO] [stdout]     |
[INFO] [stdout] 600 |             return Some(Message::error(utils::error::ChessServerError::GameNotFound { game_id: e }, request_id));
[INFO] [stdout]     |                                        +++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 600 |             return Some(Message::error(utils::error::ChessServerError::InvalidMove { reason: e }, request_id));
[INFO] [stdout]     |                                        +++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 600 |             return Some(Message::error(utils::error::ChessServerError::PlayerNotFound { player_id: e }, request_id));
[INFO] [stdout]     |                                        +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 600 |             return Some(Message::error(utils::error::ChessServerError::PlayerAlreadyInGame { player_id: e }, request_id));
[INFO] [stdout]     |                                        ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout]     = and 15 other candidates
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/network/server.rs:889:40
[INFO] [stdout]     |
[INFO] [stdout] 889 |             return Some(Message::error(e, request_id));
[INFO] [stdout]     |                         -------------- ^ expected `ChessServerError`, found `String`
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/network/protocol.rs:367:12
[INFO] [stdout]     |
[INFO] [stdout] 367 |     pub fn error(error: ChessServerError, request_id: Option<String>) -> Self {
[INFO] [stdout]     |            ^^^^^ -----------------------
[INFO] [stdout] help: try wrapping the expression in a variant of `utils::error::ChessServerError`
[INFO] [stdout]     |
[INFO] [stdout] 889 |             return Some(Message::error(utils::error::ChessServerError::GameNotFound { game_id: e }, request_id));
[INFO] [stdout]     |                                        +++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 889 |             return Some(Message::error(utils::error::ChessServerError::InvalidMove { reason: e }, request_id));
[INFO] [stdout]     |                                        +++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 889 |             return Some(Message::error(utils::error::ChessServerError::PlayerNotFound { player_id: e }, request_id));
[INFO] [stdout]     |                                        +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 889 |             return Some(Message::error(utils::error::ChessServerError::PlayerAlreadyInGame { player_id: e }, request_id));
[INFO] [stdout]     |                                        ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout]     = and 15 other candidates
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `shutdown` found for struct `tokio::net::TcpStream` in the current scope
[INFO] [stdout]     --> src/network/server.rs:98:40
[INFO] [stdout]      |
[INFO] [stdout]   98 |                         let _ = stream.shutdown().await;
[INFO] [stdout]      |                                        ^^^^^^^^ method not found in `tokio::net::TcpStream`
[INFO] [stdout]      |
[INFO] [stdout]     ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.45.1/src/io/util/async_write_ext.rs:1289:12
[INFO] [stdout]      |
[INFO] [stdout] 1289 |         fn shutdown(&mut self) -> Shutdown<'_, Self>
[INFO] [stdout]      |            -------- the method is available for `tokio::net::TcpStream` here
[INFO] [stdout]      |
[INFO] [stdout]      = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `AsyncWriteExt` which provides `shutdown` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]      |
[INFO] [stdout]    1 + use tokio::io::AsyncWriteExt;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/network/server.rs:483:48
[INFO] [stdout]     |
[INFO] [stdout] 483 |                     return Some(Message::error(e, request_id));
[INFO] [stdout]     |                                 -------------- ^ expected `ChessServerError`, found `String`
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/network/protocol.rs:367:12
[INFO] [stdout]     |
[INFO] [stdout] 367 |     pub fn error(error: ChessServerError, request_id: Option<String>) -> Self {
[INFO] [stdout]     |            ^^^^^ -----------------------
[INFO] [stdout] help: try wrapping the expression in a variant of `utils::error::ChessServerError`
[INFO] [stdout]     |
[INFO] [stdout] 483 |                     return Some(Message::error(utils::error::ChessServerError::GameNotFound { game_id: e }, request_id));
[INFO] [stdout]     |                                                +++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 483 |                     return Some(Message::error(utils::error::ChessServerError::InvalidMove { reason: e }, request_id));
[INFO] [stdout]     |                                                +++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 483 |                     return Some(Message::error(utils::error::ChessServerError::PlayerNotFound { player_id: e }, request_id));
[INFO] [stdout]     |                                                +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 483 |                     return Some(Message::error(utils::error::ChessServerError::PlayerAlreadyInGame { player_id: e }, request_id));
[INFO] [stdout]     |                                                ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout]     = and 15 other candidates
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `palyer_id` on type `session::Session`
[INFO] [stdout]    --> src/network/server.rs:528:21
[INFO] [stdout]     |
[INFO] [stdout] 528 |             session.palyer_id.clone(),
[INFO] [stdout]     |                     ^^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout] help: a field with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 528 -             session.palyer_id.clone(),
[INFO] [stdout] 528 +             session.player_id.clone(),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/network/server.rs:532:50
[INFO] [stdout]     |
[INFO] [stdout] 532 |             Err(e) => return Some(Message::error(e, request_id)),
[INFO] [stdout]     |                                   -------------- ^ expected `ChessServerError`, found `String`
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/network/protocol.rs:367:12
[INFO] [stdout]     |
[INFO] [stdout] 367 |     pub fn error(error: ChessServerError, request_id: Option<String>) -> Self {
[INFO] [stdout]     |            ^^^^^ -----------------------
[INFO] [stdout] help: try wrapping the expression in a variant of `utils::error::ChessServerError`
[INFO] [stdout]     |
[INFO] [stdout] 532 |             Err(e) => return Some(Message::error(utils::error::ChessServerError::GameNotFound { game_id: e }, request_id)),
[INFO] [stdout]     |                                                  +++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 532 |             Err(e) => return Some(Message::error(utils::error::ChessServerError::InvalidMove { reason: e }, request_id)),
[INFO] [stdout]     |                                                  +++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 532 |             Err(e) => return Some(Message::error(utils::error::ChessServerError::PlayerNotFound { player_id: e }, request_id)),
[INFO] [stdout]     |                                                  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 532 |             Err(e) => return Some(Message::error(utils::error::ChessServerError::PlayerAlreadyInGame { player_id: e }, request_id)),
[INFO] [stdout]     |                                                  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout]     = and 15 other candidates
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/network/server.rs:600:40
[INFO] [stdout]     |
[INFO] [stdout] 600 |             return Some(Message::error(e, request_id));
[INFO] [stdout]     |                         -------------- ^ expected `ChessServerError`, found `String`
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/network/protocol.rs:367:12
[INFO] [stdout]     |
[INFO] [stdout] 367 |     pub fn error(error: ChessServerError, request_id: Option<String>) -> Self {
[INFO] [stdout]     |            ^^^^^ -----------------------
[INFO] [stdout] help: try wrapping the expression in a variant of `utils::error::ChessServerError`
[INFO] [stdout]     |
[INFO] [stdout] 600 |             return Some(Message::error(utils::error::ChessServerError::GameNotFound { game_id: e }, request_id));
[INFO] [stdout]     |                                        +++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 600 |             return Some(Message::error(utils::error::ChessServerError::InvalidMove { reason: e }, request_id));
[INFO] [stdout]     |                                        +++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 600 |             return Some(Message::error(utils::error::ChessServerError::PlayerNotFound { player_id: e }, request_id));
[INFO] [stdout]     |                                        +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 600 |             return Some(Message::error(utils::error::ChessServerError::PlayerAlreadyInGame { player_id: e }, request_id));
[INFO] [stdout]     |                                        ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout]     = and 15 other candidates
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/network/server.rs:889:40
[INFO] [stdout]     |
[INFO] [stdout] 889 |             return Some(Message::error(e, request_id));
[INFO] [stdout]     |                         -------------- ^ expected `ChessServerError`, found `String`
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/network/protocol.rs:367:12
[INFO] [stdout]     |
[INFO] [stdout] 367 |     pub fn error(error: ChessServerError, request_id: Option<String>) -> Self {
[INFO] [stdout]     |            ^^^^^ -----------------------
[INFO] [stdout] help: try wrapping the expression in a variant of `utils::error::ChessServerError`
[INFO] [stdout]     |
[INFO] [stdout] 889 |             return Some(Message::error(utils::error::ChessServerError::GameNotFound { game_id: e }, request_id));
[INFO] [stdout]     |                                        +++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 889 |             return Some(Message::error(utils::error::ChessServerError::InvalidMove { reason: e }, request_id));
[INFO] [stdout]     |                                        +++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 889 |             return Some(Message::error(utils::error::ChessServerError::PlayerNotFound { player_id: e }, request_id));
[INFO] [stdout]     |                                        +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout] 889 |             return Some(Message::error(utils::error::ChessServerError::PlayerAlreadyInGame { player_id: e }, request_id));
[INFO] [stdout]     |                                        ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   +
[INFO] [stdout]     = and 15 other candidates
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/network/server.rs:307:45
[INFO] [stdout]     |
[INFO] [stdout] 307 |                 self.handle_respond_to_draw(req, &client_info, session, message.id)
[INFO] [stdout]     |                      ---------------------- ^^^ expected `OfferDrawRequest`, found `RespondToDrawRequest`
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/network/server.rs:905:14
[INFO] [stdout]     |
[INFO] [stdout] 905 |     async fn handle_respond_to_draw(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 906 |         &self,
[INFO] [stdout] 907 |         _req: OfferDrawRequest,
[INFO] [stdout]     |         ----------------------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/network/server.rs:307:45
[INFO] [stdout]     |
[INFO] [stdout] 307 |                 self.handle_respond_to_draw(req, &client_info, session, message.id)
[INFO] [stdout]     |                      ---------------------- ^^^ expected `OfferDrawRequest`, found `RespondToDrawRequest`
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/network/server.rs:905:14
[INFO] [stdout]     |
[INFO] [stdout] 905 |     async fn handle_respond_to_draw(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 906 |         &self,
[INFO] [stdout] 907 |         _req: OfferDrawRequest,
[INFO] [stdout]     |         ----------------------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0308, E0599, E0609.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0308`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `chess-server` (lib test) due to 7 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] Some errors have detailed explanations: E0308, E0599, E0609.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0308`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `chess-server` (lib) due to 7 previous errors
[INFO] running `Command { std: "docker" "inspect" "b857a2216dba51a9db4905e8497599e2ff66bc5aef6633dbe0aa5c4a6ae98413", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b857a2216dba51a9db4905e8497599e2ff66bc5aef6633dbe0aa5c4a6ae98413", kill_on_drop: false }`
[INFO] [stdout] b857a2216dba51a9db4905e8497599e2ff66bc5aef6633dbe0aa5c4a6ae98413
